package 笔试;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @Date 2024/11/20 22:34
 * @description: 杭州银行笔试
 * .
 * @Author LittleNight
 */
public class hangzhouyinhang {

      // 1. 题名: 分析交易类型。 模拟类型： 一个字符串， 找出次数大于k的字符。 思路： hashMap。
    /**
     * 代码中的类名、方法名、参数名已经指定，请勿修改，直接返回方法规定的值即可
     *
     *
     * @param mystring string字符串
     * @param k int整型
     * @return int整型
     */
    public int findKthTrace (String mystring, int k) {
        // write code here
        // 统计次数
        Map<Character, Integer> hash = new HashMap<>();
        // 遍历
        char[] ch = mystring.toCharArray();
        for(char c : ch) {
            // 放入
            hash.put(c, hash.getOrDefault(c, 0) + 1);
        }
        // 遍历map的key
        int ret = 0;
        for(char c : hash.keySet()) {
            if(hash.get(c) >= k)  {
                ret++;
            }
        }
        return ret;
    }


    // 给一个数组和n（表示长度）， 先找出平均值k， 删除高于平均值的数据。  继续重复知道无法删除，求删除的次数。

        public static int removeAboveAverage(int[] arr, int n) {
            int count = 0;
            // 记录删除次数
            List<Integer> list = new ArrayList<>();
            for (int num : arr) {
                list.add(num);
                // 将数组转换为列表便于操作
            }

            while (true) {
                double average = list.stream().mapToDouble(i -> i).average().orElse(0);
                // 移除高于平均值的元素
                boolean removed = list.removeIf(num -> num > average);
                if (!removed) {
                    break; // 如果没有元素被移除，结束循环
                }
                count++;
            }

            return count;
        }

        public static void main(String[] args) {
            int[] arr = {5, 1, 9, 4, 8};
            int n = arr.length;
            int result = removeAboveAverage(arr, n);
            System.out.println("删除的次数: " + result);
        }

}
